package com.lf.service;

import com.lf.entity.ResponseWrapper;
import com.lf.entity.RevenuesEntity;
import com.lf.entity.vo.front.CheckRecordVo;
import com.lf.entity.vo.front.ReportVo;
import com.lf.entity.vo.front.UserVo;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;
import java.util.Map;

/**
 * @Description: 用户相关服务
 * @Param:
 * @return:
 * @Author: gxl
 * @Date: 2019/12/05
 */
public interface IUserService {

    /**
     * 获取用户信息
     * @return
     * @throws Exception
     */
//    UserVo getUser(String account);

    /**
     * 更新登录密码
     * @param account
     * @param password
     */
//    void updatePassWord(String account, String password);

    /**
     * 获取用户微信openid，并保存用户信息
     * @param jscode
     * @param pid
     * @return
     */
    ResponseWrapper getUserOpenId(String jscode,Long pid);

    /**
     * 核查用户信息
     * @param realName
     * @param code
     * @return
     */
    UserVo checkName(Integer uid,String realName, String code);

    /**
     * 更新用户授权码
     * @return
     */
    String updateCode(Integer userId);

    /**
     * 获取授权码
     * @param userId
     * @return
     */
    String getCode(Integer userId);

    /**
     *
     * 获取核查记录
     * @param userId
     * @param pageSize
     * @param rows
     * @return
     */
    List<CheckRecordVo> getRecords(Integer userId,Integer pageSize,Integer rows);

    /**
     * 获取用户核查详情
     * @param userId
     * @return
     */
    CheckRecordVo getRecordInfo(Integer userId);

    /**
     * 获取用户被吐槽记录
     * @param userId
     * @param pageSize
     * @param rows
     * @return
     */
    List<ReportVo> getReports(Integer userId, Integer pageSize, Integer rows);

    /**
     * 吐槽用户
     * @param reportUserId
     * @param beReportUserId
     * @param reportContent
     */
    void reportUser(Integer reportUserId, Integer beReportUserId, String reportContent);

    /**
     * 获取我的邀请码
     * @param userId
     * @return
     */
    ResponseWrapper visitCode(Integer userId);

    /**、
     * 我的收益记录
      * @param userId
     * @param pageSize
     * @param rows
     * @return
     */
    List<RevenuesEntity> myRevenues(Integer userId, Integer pageSize, Integer rows);

    /**
     * 我的收益
     * @param userId
     * @return
     */
    UserVo userRevenue(Integer userId);

    /**
     * 申请认证
     * @param userId
     * @param head
     * @param cardA
     * @param cardB
     */
    void applyAuth(Integer userId, String head, String cardA, String cardB, String mobile, String code);

    /**
     * 认证状态
     * @param userId
     * @return
     */
    String authStatus(Integer userId);

    /**
     * 更新审核状态
     * @param id
     * @param status
     * @param rname
     * @param year
     * @param mouth
     * @param day
     * @param idc
     * @param nation
     * @param sex
     * @param addr
     */
    void updateAuth(Integer id, String status, String rname, String year, String mouth, String day, String idc, String nation, String sex, String addr);

    /**
     *
     * 认证申请列表
     * @param page
     * @param limit
     * @param status
     * @return
     */
    ResponseWrapper authList(Integer page, Integer limit, Integer status);

    /**
     * 获取手机验证码
     * @param mobile
     */
    void sendVerificationCode(String mobile);

    /**
     * 用户列表
     * @param page
     * @param limit
     * @return
     */
    ResponseWrapper userList(Integer page, Integer limit);

    /**
     * 用户收益列表
     * @param page
     * @param limit
     * @param userId
     * @return
     */
    ResponseWrapper userRevenueList(Integer page, Integer limit, Integer userId);

    /**
     * 查询用户提现记录
     * @param page
     * @param limit
     * @param userId
     * @return
     */
    ResponseWrapper userWithDrawnList(Integer page, Integer limit, Integer userId);

    /**
     * 用户提现
     * @param userId
     * @return
     */
    ResponseWrapper userWithDrawn(Integer userId);

    /**
     * 获取下级用户列表
     * @param userId
     * @param pageSize
     * @param rows
     * @return
     */
    ResponseWrapper getChildRecords(Integer userId, Integer pageSize, Integer rows);

    /**
     * 禁止用户提现
     * @param userId
     * @return
     */
    ResponseWrapper noDrawn(Integer userId);

    /**
     * 关闭核查收费
     * @return
     */
    ResponseWrapper closeOrOpenPay();

    /**
     *
     * 获取核查收费状态
     * @return
     */
    ResponseWrapper getPayStatus();
    /**
     * 关闭/开启提现功能
     * @return
     */
    ResponseWrapper closeOrOpenDrawnStatus();
    /**
     * 获取提现开关状态
     * @param
     * @return
     */
    ResponseWrapper getDrawnStatus();

    /**
     *
     * 微信支付回调
     * @param m
     * @return
     */
    String wxpayCallback(Map<String,String > m);

    /**
     * 微信统一下单
     * @param userid
     * @param type
     * @return
     */
    ResponseWrapper unifiedOrder(Integer userid, String type);

    /**
     * 获取吐槽列表
     * @param page
     * @param limit
     * @param isReally
     * @param userName
     * @return
     */
    ResponseWrapper reportList(Integer page, Integer limit, Integer isReally, String userName);

    /**
     * 审核吐槽
     * @param userId
     * @param isReally
     * @return
     */
    ResponseWrapper examineReport(Integer userId, Integer isReally);

    /**
     * 获取用户支付列表
     * @param page
     * @param limit
     * @param resultCode
     * @param errCode
     * @param outTradeNo
     * @param attach
     * @param transactionId
     * @return
     */
    ResponseWrapper payList(Integer page, Integer limit,String resultCode, String errCode, String outTradeNo, Integer attach, String transactionId);

    /**
     * 企业付款列表
     * @param page
     * @param limit
     * @param resultCode
     * @param parterTradeNo
     * @param errCode
     * @param paymentNo
     * @param reUserName
     * @return
     */
    ResponseWrapper transferList(Integer page, Integer limit, String resultCode, String parterTradeNo, String errCode, String paymentNo, String reUserName);

    /**
     * 管理台提现
     * @param outTradeNo
     * @return
     */
    ResponseWrapper reDrawn(String outTradeNo);

    /**
     * 启动或关闭敏感功能
     * @return
     */
    ResponseWrapper closeOrOpen();

    /**
     * 获取启动或关闭敏感功能
     * @return
     */
    ResponseWrapper getCO();

    /**
     * 身份证正面照片上传
     * @param file
     * @param userId
     * @return
     */
    ResponseWrapper uploadIdCard(MultipartFile file, Integer userId);

    /**
     * 图片上传
     * @param file
     * @return
     */
    ResponseWrapper uploadPicture(MultipartFile file);

    /**
     * 获取敏感功能状态
     * @return
     */
    ResponseWrapper loadData();
    /**
     * 获取 总收益 总支出 已支出 未支出 平台用户数 平台代理商数 平台普通用户数
     * @return
     */
    ResponseWrapper getDatas();

    /**
     * 获取用户推广二维码
     * @param userId
     * @return
     */
    ResponseWrapper getQrCode(Long userId);

    /**
     * 绑定父级id
     * @param jscode
     * @param pid
     * @return
     */
    ResponseWrapper bindParent(String jscode,Long pid);
}
